package br.com.citta.dao.impl;

import br.com.citta.business.entities.Empenho;
import br.com.citta.business.entities.MovimentoEmpenho;
import br.com.citta.dao.MovimentoEmpenhoDao;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class MovimentoEmpenhoDaoImpl extends HibernateDaoSupport implements MovimentoEmpenhoDao {
    
    public List<MovimentoEmpenho> findAll(String ordem){
        return getHibernateTemplate().find("from MovimentoEmpenho");
    }
    
    public List<MovimentoEmpenho> findByEmpenho(Empenho empenho, String anoBase, String mesFim){
        Integer dia = (new GregorianCalendar(Integer.parseInt(anoBase), Integer.parseInt(mesFim)-1,1)).getActualMaximum(Calendar.DAY_OF_MONTH);
        String dataFim = "'"+dia+"/"+mesFim+"/"+anoBase+"'";

        StringBuilder sb = new StringBuilder();
        sb.append("from MovimentoEmpenho where id.anoBase = ").append(empenho.getId().getPlanoDespesa().getId().getUnidadeGestora().getId().getAnoBase());
        sb.append(" and id.unidadeGestora = ").append(empenho.getId().getPlanoDespesa().getId().getUnidadeGestora().getId().getCodigo());
        sb.append(" and id.numero = ").append(empenho.getId().getNumero());
        sb.append(" and dataMovim <= ").append(dataFim);;
        sb.append(" order by id.sequencia");
        List<MovimentoEmpenho> lista = getHibernateTemplate().find(sb.toString());
        return lista;
    }
    
}
